/**
 * {{{description}}}
{{#vars}}
 * @param {{name}} {{{description}}}
{{/vars}}
 */
{{#hasVars}}data {{/hasVars}}class {{classname}} (

{{#vars}}
{{#required}}
{{>data_class_req_var}}{{^@last}},{{/@last}}
{{/required}}
{{^required}}
{{>data_class_opt_var}}{{^@last}},{{/@last}}
{{/required}}
{{/vars}}
) {
{{#vars}}
{{#baseItems this}}
{{#isEnum}}
    /**
    * {{{description}}}
    * Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^@last}},{{/@last}}{{/enumVars}}{{/allowableValues}}
    */
    enum class {{{datatypeWithEnum}}}(val value: {{{datatype}}}{{#isNullable}}?{{/isNullable}}){
    {{#allowableValues}}{{#enumVars}}
        {{&name}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}},{{/@last}}{{#@last}};{{/@last}}
    {{/enumVars}}{{/allowableValues}}
    }
{{/isEnum}}
{{/baseItems}}
{{/vars}}
}